package practice;

import practice.domain.Person;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ResourceBundle;

public class 使用反射执行配置文件中的方法 {
    public static void main(String[] args) throws Exception{
        // 使用ResourceBundle.getBundle读取properties文件
        ResourceBundle bundle = ResourceBundle.getBundle("p");
        String className = bundle.getString("className");
        String methodName = bundle.getString("methodName");
        // 创建字节码对象
        Class clazz = Class.forName(className);
        // 使用constructor构造器创建对象
        Constructor constructor = clazz.getDeclaredConstructor();
        // 暴力反射
        constructor.setAccessible(true);
        Object o = constructor.newInstance();
        // 传入方法名和参数类型
        Method method = clazz.getDeclaredMethod(methodName,String.class);
        method.setAccessible(true);
        Object result = method.invoke(o, "horizon4");
        System.out.println(result);


    }
}
